package com.fanbai.score.common.Utils;


import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;

import com.fanbai.score.common.Utils.log.YD_Log;


public class SPUtils {

    private static SPUtils spUtils;
    private static SharedPreferences sp;
    // 项目中的key值
    /**
     * 登陆成功时保存登录名(手机号)
     */
    public static final String KEY_USER_NAME = "username";
    /**
     * 用户昵称
     */
    public static final String KEY_NICK_NAME = "KEY_NICK_NAME";
    /**
     * 登录信息的用户id
     */
    public static final String KEY_UID = "uid";
    /**
     * 登录信息的管家用户id
     */
    public static final String KEY_AID = "uid";
    /**
     * 登录信息的token
     */
    public static final String KEY_TOKEN = "token";

    /**
     * 头像url
     */
    public static final String KEY_HEADICON = "KEY_HEADICON";

    /**
     * 是否为首次开启APP
     */
    public static final String KEY_ISFIRST = "isFirst";
    /**
     * 请求验证码时填写的用户名
     */
    public static final String KEY_CODE_NAME = "codeUsername";
    /**
     * 请求验证码时的时间
     */
    public static final String KEY_CODE_TIME = "KEY_CODE_TIME";

    /**
     * 上次检查版本的时间
     */
    public static final String KEY_VERSION_CHECK = "KEY_VERSION_CHECK";

    /**
     * 单例模式获取SPUtils对象
     *
     * @param ctx
     * @return
     */
    synchronized public static SPUtils with(Context ctx) {
        if (spUtils == null || sp == null) {
            spUtils = new SPUtils(ctx);
        }
        return spUtils;
    }

    /**
     * 单例模式中的不可引用的构造方法
     *
     * @param ctx
     */
    private SPUtils(Context ctx) {
        sp = ctx.getSharedPreferences("ydwl", Context.MODE_PRIVATE);
    }

    /**
     * 删除某key值
     *
     * @param key
     * @return
     */
    public boolean remove(String key) {
        return sp.edit().remove(key).commit();
    }

    /**
     * 保存SP值
     *
     * @param key
     * @param value
     * @return
     */
    public boolean save(String key, String value) {
        YD_Log.i("other", "SP保存类型:" + (value == null ? null : "String") + "|key:" + key + "|value:" + value);
        if (TextUtils.isEmpty(value)) {
            YD_Log.i("other", "SP清空key：" + key);
            return sp.edit().remove(key).commit();
        }
        return sp.edit().putString(key, value).commit();
    }

    /**
     * 读取SP值
     *
     * @param key
     * @return
     */
    public String get(String key, String defValue) {
        return sp.getString(key, defValue);
    }

    /**
     * 保存SP值
     *
     * @param key
     * @param value
     * @return
     */
    public boolean save(String key, long value) {
        return sp.edit().putLong(key, value).commit();
    }

    /**
     * 读取SP值
     *
     * @param key
     * @return
     */
    public long get(String key, long defValut) {
        return sp.getLong(key, defValut);
    }

    /**
     * 保存SP值
     *
     * @param key
     * @param value
     * @return
     */
    public boolean save(String key, int value) {
        return sp.edit().putInt(key, value).commit();
    }

    /**
     * 读取SP值
     *
     * @param key
     * @return
     */
    public int get(String key, int defValue) {
        return sp.getInt(key, defValue);
    }

    /**
     * 保存SP值
     *
     * @param key
     * @param value
     * @return
     */
    public boolean save(String key, boolean value) {
        return sp.edit().putBoolean(key, value).commit();
    }

    /**
     * 读取SP值
     *
     * @param key
     * @return
     */
    public boolean get(String key, boolean defValut) {
        return sp.getBoolean(key, defValut);
    }

    /**
     * 保存个人信息
     *
     * @param user
     */
   /* public static void saveUserInfo(Context ctx, UserInfo user) {
        if (user == null)
            return;
        if (user.accout != null) {
            SPUtils.with(ctx).save(SPUtils.KEY_USER_NAME, user.accout.username);
        }
        SPUtils.with(ctx).save(SPUtils.KEY_HEADICON, user.headIcon);
        // 昵称存至SP
        SPUtils.with(ctx).save(SPUtils.KEY_NICK_NAME, user.nickName);
        // 是否为房东，保存到SP内
        SPUtils.with(ctx).save(SPUtils.KEY_IS_HOST, user.isowner);
        SPUtils.with(ctx).save(SPUtils.KEY_KEYS, JsonUtils.toJsonObj(user.keys));
        SPUtils.with(ctx).save(SPUtils.KEY_KEYS_COUNT, user.count);
    }*/

    /**
     * 删除登录信息
     *
     * @param ctx
     */
    public static void removeUserInfo(Context ctx) {
        SPUtils.with(ctx).remove(SPUtils.KEY_UID);
        SPUtils.with(ctx).remove(SPUtils.KEY_AID);
        SPUtils.with(ctx).remove(SPUtils.KEY_TOKEN);
        SPUtils.with(ctx).remove(SPUtils.KEY_HEADICON);
        SPUtils.with(ctx).remove(SPUtils.KEY_NICK_NAME);
        // 再次登录时，显示上次登录账号，不删除此信息
        // SPUtils.with(ctx).remove(SPUtils.KEY_USER_NAME);
    }

    /**
     * 用户模式购物车内容
     */
    public static final String KEY_USER_CARTGOODS = "KEY_USER_CARTGOODS";
    /**
     * 用户模式可用总积分
     */
    public static final String KEY_USER_TOTALSCORE = "KEY_USER_TOTALSCORE";
    /**
     * 用户模式总贵人币
     */
    public static final String KEY_USER_RECHARGABLECOIN = "KEY_USER_RECHARGABLECOIN";
    /**
     * 用户模户式用信息
     */
    public static final String KEY_USER_USERINFO = "KEY_USER_USERINFO";



    /**
     * 老板模户式用户信息
     */
    public static final String KEY_BUSINESS_USERINFO = "KEY_BUSINESS_USERINFO";}
